package com.itlong.cloud.app.service;

import com.itlong.cloud.POJO.DTO.app.engineer.AppEngineerDevicesDTO;
import com.itlong.cloud.POJO.DTO.app.engineer.AppEngineerThresholdDTO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerDevicesVO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerDoorDevicesVO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerFloorDevicesVO;
import com.itlong.cloud.POJO.VO.app.engineer.AppEngineerQrCodeDeviceVO;

import java.util.List;

/**
 * <desc>
 *      工程版App设备信息业务处理接口。
 * <desc/>
 *
 * @createDate 2017/11/8.
 */
public interface IAppEngineerDeviceService {

    /**
     * <desc>
     *      获取用户门禁设备列表
     * </desc>
     *
     * @param userId 用户Id
     * @param projectId 项目Id
     * @return
     * @author shengen.T
     * @createDate 2017/11/8
     */
    List<AppEngineerDoorDevicesVO> getDoorDevices(String userId, String projectId) throws Exception;

    /**
     * <desc>
     *      获取用户电梯设备列表
     * </desc>
     *
     * @param userId 用户Id
     * @param projectId 项目Id
     * @return
     * @author Shengen.T
     * @createDate 2017/11/8
     */
    List<AppEngineerFloorDevicesVO> getFloorDevices(String userId,String projectId) throws Exception;

     /**
      * <desc>
      *      获取设备机号。
      * <desc/>
      *
      * @param  devicesDTO 获取设备请求参数
      * @return
      * @author shengen.T
      * @createDate 2017/11/8
      */
    List<AppEngineerDevicesVO> getDeviceId(AppEngineerDevicesDTO devicesDTO) throws Exception;


     /**
      * <desc>
      *      上传阈值。
      * <desc/>
      *
      * @param thresholdDTO  上传阈值请求参数
      * @return  返回影响函数
      * @author shengen.T
      * @createDate 2017/11/9
      */
    Integer uploadData(AppEngineerThresholdDTO thresholdDTO) throws Exception;

    /**
     * <desc>
     *      获取二维码绑定的设备信息
     * </desc>
     *
     * @return 二维码绑定的设备信息
     * @author wangzhi
     * @createDate 2020/02/26
     */
    AppEngineerQrCodeDeviceVO getDeviceByQrCode(String qrCodeContent) throws Exception;

    /**
     * <desc>
     *      绑定设备与二维码
     * </desc>
     *
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2020/02/26
     */
    Integer bindingDeviceQrCode(String qrCodeContent, String projectId, String deviceType, String sedanPlace, String deviceUnique, String floor, String userId) throws Exception;

    /**
     * <desc>
     *      获取电梯设备的楼层
     * </desc>
     *
     * @return 电梯设备的楼层列表
     * @author wangzhi
     * @createDate 2020/03/11
     */
    List<String> getDeviceFloors(String projectId, String deviceUnique) throws Exception;
}
